Method and apparatus for synchronizing virtual and physical mouse pointers on remote kvm systems

ABSTRACT

A method and system is disclosed for synchronizing the virtual and physical mouse cursors of a local computer and a remotely controlled computer. Video signals generated by a host computer are transmitted to a client computer in order to allow the user of a client computer to have a virtual presence on the host computer. However, the signals transmitted by the host computer may contain errors that can cause a physical mouse to lose synchronization with a virtual mouse. Therefore this virtual presence architecture uses USB protocol and human interface descriptors that support the movement of a mouse to an absolute position in order to synchronize a virtual mouse cursor with a physical mouse cursor.

This application is a continuation of U.S. patent application Ser. No.10/792,286 filed Mar. 4, 2004, which claims priority of U.S. ProvisionalPatent Application No. 60/485,598 filed Jul. 7, 2003, which are herebyfully incorporated by reference.

FIELD OF THE INVENTION

This invention generally relates to the field of remote computer access.More specifically, an embodiment of the present invention relates tovirtual presence architectures.

BACKGROUND OF THE INVENTION

It is often the case that a host computer is located physically distantfrom its operator. Some products have been created to facilitate remotecontrol of a computer using devices that remotely project the keyboard,video and mouse. These are typically called keyboard-video-mouse (KVM)devices. For example, a KVM Switch enables a single keyboard, mouse andvideo display to be shared by multiple computers. A KVM device enables akeyboard, mouse and video display to be viewed remotely, with typicallyseveral hundred feet of separation. Remote Control Software enables acomputer to “take over” a remote computer and use the local machine toprovide keyboard and mouse input, and video output over a network.Additionally, there are specialized hardware components that interactwith proprietary software to provide remote KVM functionality over anetwork.

Each of these approaches has disadvantages. More specifically, remoteKVM systems generally employ relative movements of the mouse to keep themouse in sync (e.g., move 5 pixels left from where you are). The use ofthe relative movements is common because real physical mice use relativemovements. Since computer operating systems (OS's) are sometimes busywith other tasks, the mouse movement messages may be lost or skipped.Therefore, if a virtual pointer is maintained in a remote KVM system, itmay no longer be in sync with the originating system. Both PS/2 and USBmice send these same relative movements messages. Consequently, it isdesirable to implement a mouse synchronization system for use with aremote KVM system that can synchronize mouse movements based on anabsolute position.

BRIEF SUMMARY OF THE INVENTION

The present invention, which may be implemented utilizing ageneral-purpose digital computer, in certain embodiments of the presentinvention, includes novel methods and apparatus to provide efficient,effective, and/or flexible ability to provide mouse synchronizationwithout requiring access to the internal state of the host.

In another embodiment of the present invention, existing local arenetwork (LAN) infrastructure is utilized for remote control of hostcomputers without requiring significant reconfiguration of theirsoftware and/or hardware.

One embodiment of the present invention includes an architecture thatprovides remote control of a host computer over existing Internetprotocol (IP) network infrastructure without requiring significantchanges to the remote host, but allows deployment with different levelsof intrusiveness (e.g., depending on the requirements of theapplication). In another embodiment of the present invention, theimplementation of the architecture requires no software changes to theremote host. In a further embodiment of the present invention, aseparate device with its own power and case is utilized (e.g., astand-alone device), such as a peripheral component interconnect (PCI)card.

In a further embodiment of the invention, the mouse movements on thehost computer and the mouse movements on the remote computer may besynchronized. Human interface descriptors (HIDs), operating on universalserial bus (USB) protocol, can be used to move a cursor on a remote hostcomputer to an absolute position. Consequently, the local clientcomputer can use this information to maintain synchronization with itscursor.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an exemplary system into which virtualpresence architecture may be implemented.

FIG. 2 is an exemplary block diagram of a virtual presence architecture.

FIG. 3 is a more detailed block diagram of a virtual presencearchitecture.

FIG. 4 illustrates an exemplary flow for the VPS and VPC videosubsystems

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 shows the basic format where the Video Presence Architecture(VPA) may be implemented. The computer system 100 comprises a centralprocessor 102, a main memory 104, an input/output (I/O) controller 106,a keyboard 108, a pointing device 110 (e.g. mouse, track ball, stylus,or the like), a display device 112, a mass storage 114 (e.g. hard disk,optical drive, or the like), and a network interface 118. Additional I/Odevices, such as printing device 116, may be included in the computersystem 100 as desired.

The system also comprises system bus 120, or similar architecturethrough which some or all of the components shown communicate with eachother. Additionally, those with ordinary skill in the art will recognizethat computer system 100 can include an IBM-compatible personal computerutilizing an Intel microprocessor, or any other type of computer.Additionally, instead of a single processor, two or more processors canbe utilized to provide faster operations.

The network interface 118 provides communication capability with othercomputer systems on the same local network, on a different networkconnected via modems and the like to the present network, or to othercomputers across the Internet. In various embodiments, the networkinterface 118 can be implemented in Ethernet, Fast Ethernet, GigabitEthernet, wide-area network (WAN), leased line (such as T1, T3, opticalcarrier 3 (OC3), and the like), digital subscriber line (DSL and itsvarieties, such as high bit-rate DSL (HDSL), integrated services digitalnetwork DSL (IDSL) and the like), time division multiplexing (TDM),asynchronous transfer mode (ATM), satellite, cable modem, UniversalSerial Bus (USB) and FireWire.

FIG. 2 illustrates an exemplary block diagram of a Virtual PresenceArchitecture (VPA) in accordance with an embodiment of the presentinvention.

Table 1 below provides a glossary of the terms used to describe the VPAarchitecture in accordance with some embodiments of the presentinvention (such as those discussed with respect to Figs. herein).

TABLE 1 Glossary of Terms TERM GLOSSARY Capture The process ofdigitizing and formatting data for processing. Decode Decode: theprocess of converting data encoded, e.g., by a virtual presence encoderfor a device into a form suitable for transfer to that device. EncodeThe process of converting signals captured for a device into a formsuitable for transfer to, e.g. a virtual presence decoder. Host Theremote computer that is to be controlled form the local client. NICNetwork interface connection, i.e., the device that provides networkconnectivity. VPC Virtual presence client; the subsystem that captureskeyboard, mouse and other local device inputs for transmission to theVPS, and decodes the video display and other outputs from the VPS VPPVirtual presence protocol; the syntax and semantics of the messagesexchanged by the VPS and the VPC. The VPP may be implemented ontransmission control protocol (TCP) and user datagram protocol (UDP)over IP in an embodiment of the present invention VPS Virtual presenceserver; the subsystem that captures the hardware outputs of the host,encodes them for transmission to the VPC, and decodes the keyboard,mouse and other device inputs transmitted by the VPC. Message The entitythat receives messages and tags them as being a Multiplexer particulartype, then delivers them to be compressed and optionally encrypted.Message The entity that takes decrypted and decompressed data fromDemultiplexer the stream and delivers it to the receiver registered toget that message type. Frame Buffer Memory where the digital image ofthe screen is stored; in an embodiment of the present invention, itconsists of 16 bit pixels with 5 bits each for Red, Green and Blueintensity. Tile 256 pixel area of the frame buffer treated as a unity bythe video subsystem in accordance with an embodiment of the presentinvention.

In FIG. 2, the VPA 200 includes a Virtual Presence Server (VPS) 204co-located with the remote host 202 and a Virtual Presence Client (VPC)208 at a location remote from the VPS. The host 202 interacts with thedevices connected to the VPC (such as video display 210, keyboard 212,mouse 214, and other device 216) as if they were connected directly tohost 202. In one embodiment of the present invention, an advantage ofthis approach is the flexibility in the design and deployment of the VPS204.

FIG. 2 further demonstrates that keyboard 212, mouse 214, other device216 send their respective signals to the VPC 208. VPC 208 captures thehardware outputs of the host and encodes them for transmission to theVPS. The transmission to the VPS can take place over IP Network 206,which is connected to host computer 202. Following transmission, thesignals arrive in VPS 204, which decodes the keyboard, mouse and otherdevice inputs transmitted by the VPC. These inputs are then sent to thehost computer, where the input commands are executed. Following theexecution of the keyboard, mouse and other device commands, host 202sends a hardware output in the form of a video signal displaying changesresulting from the input commands and a signal for the other device 216.The VPS 204 captures the hardware outputs and encodes them fortransmission to the VPC 208 over IP Network 206. VPC 208 then decodesthe video and other device outputs from the VPS and transmits them toeither video display 210 or other device 216.

FIG. 3 illustrates a more detailed block diagram of a VPA in accordancewith another embodiment of the present invention. Here, VPC 305 acceptssignals from keyboard 348, mouse 350, and other device 352. Thesesignals are then input to Keyboard Logic 354, Mouse Logic 362, and OtherDevice Logic 370, respectively. Inside each of the logic devices, therespective signals are captured at steps 356, 364, and 372,respectively, and are digitized and formatted for processing at steps358, 366, and 374, respectively. After processing, the signals areencoded at steps 360, 368, and 376, respectively, by converting thecaptured signals for each device into forms suitable for transfer to adecoder, such as a Virtual Presence decoder. After the signals areencoded, they are sent to multiplexer 380, which combines the keyboard,mouse and other device signals in preparation for transmission to theVPS 304. However, before transmission, the signals can optionally becompressed in step 382 and/or encrypted in step 384. Then the signalsare transported in 386 via IP network 344 to the VPS 304.

Once in VPS 304, the signals are decrypted and decompressed in items 332and 334, respectively, if required. The input signals are thendemultiplexed in 336 in order to separate the signals for decoding initems 338, 340, and 342. Then the keyboard, mouse and other devicesignals are sent to the host 302, where the commands are executedinternally. Following the execution of the keyboard, mouse and otherdevice inputs, two hardware output signals are transmitted back to VPS302, the video output signal and the other device output signal. Thevideo output signal enters Video Logic element 306, which captures,compares, analyzes and encodes the output in steps 308-314,respectively. The other device output signal is sent to Other DeviceLogic element 316, where it is captured, processed and encoded in steps318-322, respectively. The encoded video and other device outputs arethen multiplexed in step 324, and can optionally be compressed and/orencrypted in steps 326 and 328, respectively.

The multiplexed output signal is then transported in step 330 over IPNetwork 344 to the VPC 305. Once the output signal is back in the VPC,it is decrypted and decompressed, if need be, in steps 390 and 392,respectively. The output signal is then demultiplexed into separatevideo and other device signals in step 394. Following that, the twosignals are decoded in steps 396 and 398, and then sent to video display346 and other device 352, where the outputs are displayed to the remoteuser. For example, the video output signal of host 302 is displayed onvideo display 346, and the other device output signal is executed onother device 352.

In another embodiment of the present invention, the devices in the VPAcan be characterized by their data flow requirements. For example, thevideo logic system 306 on the VPS captures video frames, does deltaanalysis, and encodes the stream for the VPC to decode and display. Thisdoes not require any return information in accordance with an embodimentof the present invention. Similarly, the mouse and keyboard subsystemsmay simply transmit the stream from their corresponding devices on theVPC for transmission to the VPS. On the other hand, special devices suchas USB may require bi-directional transfers which are treated asindependent directional flows by the architecture.

In a further embodiment of the present invention, the VPS captures videoand transmits it to the VPC. For example, the VPS receives the mouse andkeyboard data streams from the VPC and decodes them into signals for theHost. The VPS manages input and output data streams for other devicesand simulates the local interactions necessary to provide remotefunctionality.

In accordance with another embodiment of the present invention, thekeyboard and mouse may both be simple byte streams. Therefore, therewould be little processing necessary to decode the streams. However,there is significant processing to maintain synchronization andduplicate the semantics and timing of the streams so that the Host canproperly maintain its states as if the devices were directly connected.

More specifically, in an embodiment of the present invention, the VPSkeyboard subsystem relays the byte stream from the remote keyboard tothe Host without any additional processing. In a further embodiment, theVPS mouse subsystem relays the byte stream from the remote mouse to theHost. This byte stream may include “delta” messages (e.g. indicatingchange), which are interpreted by the Host relative to the currentposition of the cursor. Due to timing and other issues, the relativeposition of the cursor can get out of sync. Consequently, specialprocessing in both the VPS and VPC can be used to mitigate this problem.

FIG. 4 illustrates an exemplary flow for the VPS and VPC videosubsystems in accordance with an embodiment of the present invention.Since video is often the most data intensive part of the VirtualPresence system, the most significant processing occurs in thiscomponent. VPS Video subsystem 400 captures the red, green and blue(RGB) video signals outputted from a host computer in step 402. The RGBsignals are then transmitted to Current Frame Buffer 404. Theillustrated video subsystem may be implemented in accordance with twocharacteristics of a computer's video display (such as the systemdiscussed with respect to FIG. 1). Because screens may be primarily onecolor and because the screen typically only changes in local areas,leaving most of the display the same, the video subsystem can takeadvantage of these characteristics to provide significant reductions inthe required data.

In an embodiment of the present invention, the VPS video logic mayspecifically benefit from the creation of custom hardware to support theprocess. In another embodiment of the present invention, afield-programmable gate-array (FPGA) may be utilized to implement thelogic in hardware. Further information regarding an FPGA apparatus for aVPA is later described in detail.

For example, in one embodiment, the video may be first captured into oneof two frame buffers that alternate between being the current framebuffer 404 and the last frame buffer 406. In the present embodiment, theframe buffer is divided into “tiles” of 256 pixels. The Monochromedetection logic 408 analyzes each tile to see if its pixels are within aspecified difference in color. If they are, then the Monochrome Map 410corresponding to that tile receives a 1; otherwise, it receives a 0. TheDifference Detection logic 412 compares each pixel in the Current framebuffer 404 with the corresponding pixel in the Last frame buffer 406. Ifmore than a specified number of pixels have changed, then the bitcorresponding to this tile is set to one in the Difference Map 414;otherwise it is set to zero.

In accordance with another embodiment of the present invention, thevideo encoder 416 then processes the two maps minimizing the datatransmitted to indicate which tiles are changed, and sending a “raw”tile or a “monochrome” tile or a “no change” tile, and using, forexample, run-length encoding to eliminate duplicates. The encoded streamis then passed to the message delivery subsystem 418 for optionalcompression and encryption, and then transmission to the VPC 420.

It is envisioned that other devices may be remotely connected to thehost using a similar architecture. For example, a USB device, whichprovides a serial connection to deliver a stream of bytes between twoentities. USB devices have certain timing and signaling characteristicsthat are required for their function. Additionally, because USB isbi-directional, a complete encode and decode subsystem may beimplemented for both the VPS and VPC.

Moreover, the VPS may implement the logic necessary to emulate the USBdevice for the Host. The VPC may implement the logic necessary toemulate the Host for the USB device. This may require buffering of thebyte stream on both ends and emulating the timing characteristicsrequired. This may also require special processing, similar to the videosubsystem, depending on the particular device. In particular, newdigital display devices, such as liquid crystal displays (LCDs) arereplacing traditional cathode ray tubes (CRTs) in many applications, andare connected using USB technology.

In a further embodiment of the present invention, the VPC 420 captureskeyboard and mouse data streams, encodes them, and transmits the streamsto the VPS 400. The VPC 420 later receives an encoded video stream,decodes it in step 422, and then processes the stream to remove encodingartifacts in step 424. The VPC then transfers the image to its owndisplay, mapping the pixel image as needed. In particular, because themouse is used as a pointing device and its motion is translated to acursor on the video image, special processing may be utilized to keepthe VPC cursor synchronized with the Host cursor.

Moreover, since the VPS may have no access to information about theinternal state of the host (e.g., if the host operating system does notoperate in a deterministic manner on the given inputs), the host statemay become out of sync with the VPC. In particular, Microsoft Windowsoperating systems periodically ignore mouse moves, which can cause asignificant problem.

In one embodiment of the present invention, the USB protocol is utilizedto provide movement of the mouse to an absolute position. In a furtherembodiment of the present invention, human interface descriptors (HIDs)are utilized, which can define many different types of devices, some ofwhich support moving a pointer to an absolute position (e.g., move tocoordinates x543, y234). A PC tablet, for example, would use one ofthese descriptors supporting the movement of a pointer to an absoluteposition. If a remote KVM device uses one of these absolute descriptors,then it will not lose mouse sync and the physical and virtual mousepointer will always be in sync. This eliminates the rather complex setof algorithms, which may be otherwise required to make up for lostmessages and signals, and keep the points in sync.

There are several different operating systems that use USB, such asWindows, MAC, Solaris, and Linux. Although each supports USB, everyoperating system may not support a specific set of HIDs. HIDs can, forexample, include, but are not limited to, PC Tablets. In accordance withvarious embodiments of the present invention, the remote KVM system cansolve this problem in several ways. In one embodiment, testing may bedone ahead of time to determine which HIDs are supported by each OS. Forexample, it could be tested and determined that Windows supports the useof a PS/2 mouse. Then the device code may be written to ask which OS thehost computer is using. Once this information is obtained, the USBchannel can be initialized with the correct HIDs. Another method ofautomatically accomplishing this would be to try different HIDs anddetermine which ones work. This method would avoid the need to testdifferent operating systems before the synchronization method isimplemented. Additionally, this would allow for the synchronizationmethod to be used on operating systems that are not currently available.However, in each of the aforementioned methods, the logical and actualhost mouse position can be synchronized transparently, without the needfor operator intervention.

In another embodiment of the present invention, the VPC encodes the bytestream form the local keyboard and delivers it to the message subsystem,which in turn optionally compresses and encrypts the stream. The bytestream is then delivered to the VPS. Keyboard processing is envisionedto be a simple direct transfer with no feedback between the VPS and VPC,in accordance with an embodiment of the present invention.

In a further embodiment of the present invention, the VPC encodes thebyte stream from the local mouse and delivers it to the messagesubsystem, which in turn optionally compresses and encrypts the stream,and then delivers it to the VPS. The encoding consists of aggregatingmouse move messages and transmitting them. Additional processing may beperformed by the mouse subsystem to keep the cursors synchronized.

In another embodiment of the present invention, the VPC receives anencoded video stream from the VPS. The VPC decodes the stream into aworking buffer, which it then processes to remove artifacts of theencoding algorithm used. Then the working buffer is transmitted to theactual display buffer on the VPC, which the video hardware displays onthe local display device.

It is envisioned that the architecture discussed herein may beimplemented in many different ways. In various embodiments of thepresent invention, the Virtual Presence Architecture may be implementedutilizing one or more different techniques. For example, a heavilypipelined application specific integrated circuit (ASIC) or FPGA tocreate the Tile Map and the Monochrome Map may be used. Also, whencompressing and sending large data blocks, they may be split up, so theyoverlap (for example: compress some data while sending some data.Further, DIB Section application programming interfaces (API's) onWindows, or DirectX may be used. Additionally, to enhance compression,the extents of the changed area on the display can be detected and onlyinfo for that area can be sent. Also, the client may start the requestfor a next update area before it processes a current area, or the servermay automatically prepare the next update area. Further, if there ismore than one Monochrome or No Change tile, they may be stacked togetherand sent as one count. Speed can also be increased by overlapping asmany operations as possible that can happen in parallel and, forexample, blending the edges with a surrounding area when painting themonochrome tile on the client. Further, for slower links such as Dial-upor DSL, the packet turn around time can be relatively long, so one canmodify any transport used to send long streams of packets and not spendtime waiting for acknowledgements. Also, a compression function can bepicked that is balanced in time with the transport time (for example,one may avoid spending more time compressing than the bandwidth of thetransport may easily handle). Also, the client code can be tuned to thenative OS and CPU for best performance. Finally, for very slowtransports, extra time can be spent to break up tiles into subsections,and reduce data (e.g., blend groups or pixels into one, or reduce to8-bit color instead of 32-bit color, and the like).

The foregoing description has been directed to specific exemplaryembodiments of the present invention. It will be apparent to those withordinary skill in the art that modifications may be made to thedescribed embodiments of the present invention, with the attainment ofall or some of the advantages. For example, the techniques of thepresent invention may be utilized for provision of remote situations,gaming and the like. Therefore, it is the object of the appended claimsto cover all such variations and modifications as come within the spiritand scope of the invention.

1. A method of providing mouse synchronization, comprising: utilizinguniversal serial bus (USB) protocol to provide movement of a mousecursor on a host computer to an absolute position, and synchronizing theposition of a logical mouse and the position of an actual mouse usingthe absolute position information without operator intervention.
 2. Themethod of claim 1, wherein a virtual presence client (VPC) calculatessaid logical mouse position.
 3. The method of claim 1, wherein theoperating system of the logical mouse is tested to determine if itsupports the use of different human interface descriptors (HIDs).
 4. Themethod of claim 3, wherein the HIDs are USB compatible.
 5. A method ofproviding mouse synchronization, comprising: generating a signalutilizing human interface descriptors (HIDs) at a remote computer, theHIDs including a plurality of user-operated devices which may supportmoving a pointer at a local computer to an absolute position in order tosynchronize a local mouse with a remote mouse.
 6. The method of claim 5,wherein a PC tablet is used to provide the HIDs.
 7. A method of mousesynchronization comprising: testing a series of operating systems todetermine which human interface descriptors (HIDs) are supported by suchoperating systems; writing a device code on a virtual presence server(VPS) to ask which operating system (OS) is in use on a host computerhousing the VPS; determining which OS is in use on the host computer;initializing the USB channel on the host computer with a compatible HID;and using such HID over the USB channel to synchronize a remote andlocal mouse at an absolute position.
 8. An automatically invoked methodof synchronizing a local mouse with a remote mouse, comprising: tryingdifferent human interface descriptors (HIDS) to determine which HIDswork with an operating system (OS) in use, and synchronizing the localand remote host mouse positions using the HIDs, transparently withoutthe need for operator intervention.
 9. A virtual presence architecture(VPA) for a host computer comprising: a virtual presence server (VPS);and a virtual presence client (VPC) communicating with the host, saidVPC receiving absolute mouse coordinates without operator intervention.10. The VPA of claim 9, wherein one or more human interface descriptors(HIDs) are used in conjunction with a universal serial bus (USB)interface to provide said absolute mouse coordinates.
 11. The VPA ofclaim 6, wherein the VPS is a PCI card installed in a PCI slot of thehost computer.